home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / c / AmiVoGL_MDEV.lha / src / viewing.s < prev    next >
Text File  |  1997-12-30  |  12KB  |  732 lines

  1.  
  2. ; Maxon C++ Compiler
  3. ; LS2:work/voGL/src/viewing.c
  4.     mc68020
  5.     mc68881
  6.     XREF    _rotate
  7.     XREF    _translate
  8.     XREF    _identmatrix
  9.     XREF    _multmatrix
  10.     XREF    _loadmatrix
  11.     XREF    _verror
  12.     XREF    _sqrt__r
  13.     XREF    _cos__r
  14.     XREF    _sin__r
  15.     XREF    _std__in
  16.     XREF    _std__out
  17.     XREF    _std__err
  18.     XREF    ___MEMFLAGS
  19.     XREF    _vdevice
  20.  
  21.     SECTION ":0",CODE
  22.  
  23.  
  24.     XDEF    _polarview
  25. _polarview
  26. L20    EQU    -$10
  27.     link    a5,#L20+16
  28. L21    EQU    $80
  29.     move.l    d7,-(a7)
  30.     fmovem.x fp7,-(a7)
  31.     XREF    userbreak_flagpos
  32.     move.l    userbreak_flagpos,a1
  33.     btst    #4,(a1)
  34.     bne    L22
  35.     tst.b    _vdevice
  36.     bne    L1
  37.     pea    L23
  38.     jsr    _verror
  39.     addq.l    #4,a7
  40. L1
  41.     fmove.s    $8(a5),fp7
  42.     fneg.x    fp7
  43.     fmove.s    fp7,-(a7)
  44.     clr.l    -(a7)
  45.     clr.l    -(a7)
  46.     jsr    _translate
  47.     lea    $C(a7),a7
  48.     move.b    #$7A,-(a7)
  49.     move.w    $10(a5),d7
  50.     ext.l    d7
  51.     neg.l    d7
  52.     move.w    d7,-(a7)
  53.     jsr    _rotate
  54.     addq.l    #4,a7
  55.     move.b    #$78,-(a7)
  56.     move.w    $E(a5),d7
  57.     ext.l    d7
  58.     neg.l    d7
  59.     move.w    d7,-(a7)
  60.     jsr    _rotate
  61.     addq.l    #4,a7
  62.     move.b    #$7A,-(a7)
  63.     move.w    $C(a5),d7
  64.     ext.l    d7
  65.     neg.l    d7
  66.     move.w    d7,-(a7)
  67.     jsr    _rotate
  68.     addq.l    #4,a7
  69.     fmovem.x (a7)+,fp7
  70.     move.l    (a7)+,d7
  71.     unlk    a5
  72.     rts
  73.  
  74. _normallookat
  75. L24    EQU    -$9C
  76.     link    a5,#L24+68
  77. L25    EQU    $48FC
  78.     movem.l    d2-d7/a3/a6,-(a7)
  79.     fmovem.x fp5/fp6/fp7,-(a7)
  80.     move.s    $1C(a5),d4
  81.     move.s    $14(a5),d5
  82.     move.l    userbreak_flagpos,a1
  83.     btst    #4,(a1)
  84.     bne    L22
  85.     fmove.s    d5,fp7
  86.     fsub.s    $8(a5),fp7
  87.     fmove.s    d5,fp6
  88.     fsub.s    $8(a5),fp6
  89.     fmul.x    fp6,fp7
  90.     fmove.s    d4,fp6
  91.     fsub.s    $10(a5),fp6
  92.     fmove.s    d4,fp5
  93.     fsub.s    $10(a5),fp5
  94.     fmul.x    fp5,fp6
  95.     fadd.x    fp6,fp7
  96.     fmove.d    fp7,-(a7)
  97.     jsr    _sqrt__r
  98.     addq.l    #$8,a7
  99.     fmove.s    fp0,d2
  100.     fmove.s    d5,fp7
  101.     fsub.s    $8(a5),fp7
  102.     fmove.s    d5,fp6
  103.     fsub.s    $8(a5),fp6
  104.     fmul.x    fp6,fp7
  105.     fmove.s    $18(a5),fp6
  106.     fsub.s    $C(a5),fp6
  107.     fmove.s    $18(a5),fp5
  108.     fsub.s    $C(a5),fp5
  109.     fmul.x    fp5,fp6
  110.     fadd.x    fp6,fp7
  111.     fmove.s    d4,fp6
  112.     fsub.s    $10(a5),fp6
  113.     fmove.s    d4,fp5
  114.     fsub.s    $10(a5),fp5
  115.     fmul.x    fp5,fp6
  116.     fadd.x    fp6,fp7
  117.     fmove.d    fp7,-(a7)
  118.     jsr    _sqrt__r
  119.     addq.l    #$8,a7
  120.     fmove.s    fp0,d3
  121.     fmove.s    d3,fp7
  122.     ftst.x    fp7
  123.     fbeq.w    L2
  124.     fmove.s    $C(a5),fp7
  125.     fsub.s    $18(a5),fp7
  126.     fdiv.s    d3,fp7
  127.     fmove.s    fp7,-$10(a5)
  128.     fmove.s    d2,fp7
  129.     fdiv.s    d3,fp7
  130.     fmove.s    fp7,-$18(a5)
  131.     pea    -$58(a5)
  132.     jsr    _identmatrix
  133.     addq.l    #4,a7
  134.     lea    -$58(a5),a3
  135.     lea    $20(a3),a3
  136.     moveq    #2,d7
  137.     move.l    -$18(a5),0(a3,d7.l*4)
  138.     lea    -$58(a5),a6
  139.     lea    $10(a6),a6
  140.     moveq    #1,d6
  141.     move.l    0(a3,d7.l*4),0(a6,d6.l*4)
  142.     lea    -$58(a5),a3
  143.     lea    $10(a3),a3
  144.     moveq    #2,d7
  145.     move.l    -$10(a5),0(a3,d7.l*4)
  146.     fmove.s    -$10(a5),fp7
  147.     fneg.x    fp7
  148.     lea    -$58(a5),a3
  149.     lea    $20(a3),a3
  150.     moveq    #1,d7
  151.     fmove.s    fp7,0(a3,d7.l*4)
  152.     pea    -$58(a5)
  153.     jsr    _multmatrix
  154.     addq.l    #4,a7
  155. L2
  156.     fmove.s    d2,fp7
  157.     ftst.x    fp7
  158.     fbeq.w    L3
  159.     fmove.s    d5,fp7
  160.     fsub.s    $8(a5),fp7
  161.     fdiv.s    d2,fp7
  162.     fmove.s    fp7,-$C(a5)
  163.     fmove.s    $10(a5),fp7
  164.     fsub.s    d4,fp7
  165.     fdiv.s    d2,fp7
  166.     fmove.s    fp7,-$14(a5)
  167.     pea    -$58(a5)
  168.     jsr    _identmatrix
  169.     addq.l    #4,a7
  170.     lea    -$58(a5),a3
  171.     lea    $20(a3),a3
  172.     moveq    #2,d7
  173.     move.l    -$14(a5),0(a3,d7.l*4)
  174.     lea    -$58(a5),a6
  175.     moveq    #0,d6
  176.     move.l    0(a3,d7.l*4),0(a6,d6.l*4)
  177.     fmove.s    -$C(a5),fp7
  178.     fneg.x    fp7
  179.     lea    -$58(a5),a3
  180.     moveq    #2,d7
  181.     fmove.s    fp7,0(a3,d7.l*4)
  182.     lea    -$58(a5),a3
  183.     lea    $20(a3),a3
  184.     moveq    #0,d7
  185.     move.l    -$C(a5),0(a3,d7.l*4)
  186.     pea    -$58(a5)
  187.     jsr    _multmatrix
  188.     addq.l    #4,a7
  189. L3
  190.     fmovem.x (a7)+,[LATEST]
  191.     movem.l    (a7)+,#L25
  192.     unlk    a5
  193.     rts
  194.  
  195.     XDEF    _lookat
  196. _lookat
  197. L26    EQU    -$1C
  198.     link    a5,#L26+28
  199. L27    EQU    $9C
  200.     movem.l    #L27,-(a7)
  201.     fmovem.x fp7,-(a7)
  202.     move.s    $10(a5),d2
  203.     move.s    $C(a5),d3
  204.     move.s    $8(a5),d4
  205.     move.l    userbreak_flagpos,a1
  206.     btst    #4,(a1)
  207.     bne    L22
  208.     tst.b    _vdevice
  209.     bne    L4
  210.     pea    L28
  211.     jsr    _verror
  212.     addq.l    #4,a7
  213. L4
  214.     move.b    #$7A,-(a7)
  215.     move.w    $20(a5),d7
  216.     ext.l    d7
  217.     neg.l    d7
  218.     move.w    d7,-(a7)
  219.     jsr    _rotate
  220.     addq.l    #4,a7
  221.     move.l    $1C(a5),-(a7)
  222.     move.l    $18(a5),-(a7)
  223.     move.l    $14(a5),-(a7)
  224.     move.l    d2,-(a7)
  225.     move.l    d3,-(a7)
  226.     move.l    d4,-(a7)
  227.     bsr    _normallookat
  228.     lea    $18(a7),a7
  229.     fmove.s    d2,fp7
  230.     fneg.x    fp7
  231.     fmove.s    fp7,-(a7)
  232.     fmove.s    d3,fp7
  233.     fneg.x    fp7
  234.     fmove.s    fp7,-(a7)
  235.     fmove.s    d4,fp7
  236.     fneg.x    fp7
  237.     fmove.s    fp7,-(a7)
  238.     jsr    _translate
  239.     lea    $C(a7),a7
  240.     fmovem.x (a7)+,[LATEST]
  241.     movem.l    (a7)+,#L27
  242.     unlk    a5
  243.     rts
  244.  
  245.     XDEF    _perspective
  246. _perspective
  247. L29    EQU    -$88
  248.     link    a5,#L29+52
  249. L30    EQU    $8FC
  250.     movem.l    #L30,-(a7)
  251.     fmovem.x fp6/fp7,-(a7)
  252.     move.s    $12(a5),d3
  253.     move.s    $E(a5),d4
  254.     move.w    $8(a5),d5
  255.     move.s    $A(a5),d6
  256.     move.l    userbreak_flagpos,a1
  257.     btst    #4,(a1)
  258.     bne    L22
  259.     tst.b    _vdevice
  260.     bne    L5
  261.     pea    L31
  262.     jsr    _verror
  263.     addq.l    #4,a7
  264. L5
  265.     fmove.s    d6,fp7
  266.     ftst.x    fp7
  267.     fbne.w    L6
  268.     pea    L32
  269.     jsr    _verror
  270.     addq.l    #4,a7
  271. L6
  272.     fmove.s    d3,fp7
  273.     fsub.s    d4,fp7
  274.     ftst.x    fp7
  275.     fbne.w    L7
  276.     pea    L33
  277.     jsr    _verror
  278.     addq.l    #4,a7
  279. L7
  280.     tst.w    d5
  281.     beq    L34
  282.     cmp.w    #$708,d5
  283.     bne    L8
  284. L34
  285.     pea    L35
  286.     jsr    _verror
  287.     addq.l    #4,a7
  288. L8
  289.     ext.l    d5
  290.     fmove.l    d5,fp7
  291.     fdiv.d    #$.40240000.00000000,fp7
  292.     fmove.s    fp7,d2
  293.     pea    -$40(a5)
  294.     jsr    _identmatrix
  295.     addq.l    #4,a7
  296.     fmove.s    d2,fp7
  297.     fmul.d    #$.3F91DF46.A2529D2E,fp7
  298.     fdiv.d    #$.40000000.00000000,fp7
  299.     fmove.d    fp7,-(a7)
  300.     jsr    _cos__r
  301.     addq.l    #$8,a7
  302.     fmove.s    d2,fp7
  303.     fmul.d    #$.3F91DF46.A2529D2E,fp7
  304.     fdiv.d    #$.40000000.00000000,fp7
  305.     fmove.d    fp7,-(a7)
  306.     fmove.d    fp0,-$4C(a5)
  307.     jsr    _sin__r
  308.     addq.l    #$8,a7
  309.     fmove.d    -$4C(a5),fp7
  310.     fdiv.x    fp0,fp7
  311.     fdiv.s    d6,fp7
  312.     lea    -$40(a5),a3
  313.     moveq    #0,d7
  314.     fmove.s    fp7,0(a3,d7.l*4)
  315.     fmove.s    d2,fp7
  316.     fmul.d    #$.3F91DF46.A2529D2E,fp7
  317.     fdiv.d    #$.40000000.00000000,fp7
  318.     fmove.d    fp7,-(a7)
  319.     jsr    _cos__r
  320.     addq.l    #$8,a7
  321.     fmove.s    d2,fp7
  322.     fmul.d    #$.3F91DF46.A2529D2E,fp7
  323.     fdiv.d    #$.40000000.00000000,fp7
  324.     fmove.d    fp7,-(a7)
  325.     fmove.d    fp0,-$54(a5)
  326.     jsr    _sin__r
  327.     addq.l    #$8,a7
  328.     fmove.d    -$54(a5),fp7
  329.     fdiv.x    fp0,fp7
  330.     lea    -$40(a5),a3
  331.     lea    $10(a3),a3
  332.     moveq    #1,d7
  333.     fmove.s    fp7,0(a3,d7.l*4)
  334.     fmove.s    d3,fp7
  335.     fadd.s    d4,fp7
  336.     fneg.x    fp7
  337.     fmove.s    d3,fp6
  338.     fsub.s    d4,fp6
  339.     fdiv.x    fp6,fp7
  340.     lea    -$40(a5),a3
  341.     lea    $20(a3),a3
  342.     moveq    #2,d7
  343.     fmove.s    fp7,0(a3,d7.l*4)
  344.     lea    -$40(a5),a3
  345.     lea    $20(a3),a3
  346.     moveq    #3,d7
  347.     move.l    #$BF800000,0(a3,d7.l*4)
  348.     fmove.s    d3,fp7
  349.     fmul.d    #$.C0000000.00000000,fp7
  350.     fmove.s    d4,fp6
  351.     fmul.x    fp6,fp7
  352.     fmove.s    d3,fp6
  353.     fsub.s    d4,fp6
  354.     fdiv.x    fp6,fp7
  355.     lea    -$40(a5),a3
  356.     lea    $30(a3),a3
  357.     moveq    #2,d7
  358.     fmove.s    fp7,0(a3,d7.l*4)
  359.     lea    -$40(a5),a3
  360.     lea    $30(a3),a3
  361.     moveq    #3,d7
  362.     clr.l    0(a3,d7.l*4)
  363.     pea    -$40(a5)
  364.     jsr    _loadmatrix
  365.     addq.l    #4,a7
  366.     fmovem.x (a7)+,[LATEST]
  367.     movem.l    (a7)+,#L30
  368.     unlk    a5
  369.     rts
  370.  
  371.     XDEF    _window
  372. _window
  373. L36    EQU    -$74
  374.     link    a5,#L36+52
  375. L37    EQU    $8FC
  376.     movem.l    #L37,-(a7)
  377.     fmovem.x fp6/fp7,-(a7)
  378.     move.s    $18(a5),d2
  379.     move.s    $1C(a5),d3
  380.     move.s    $14(a5),d4
  381.     move.s    $10(a5),d5
  382.     move.s    $C(a5),d6
  383.     move.l    userbreak_flagpos,a1
  384.     btst    #4,(a1)
  385.     bne    L22
  386.     tst.b    _vdevice
  387.     bne    L9
  388.     pea    L38
  389.     jsr    _verror
  390.     addq.l    #4,a7
  391. L9
  392.     fmove.s    d6,fp7
  393.     fsub.s    $8(a5),fp7
  394.     ftst.x    fp7
  395.     fbne.w    L10
  396.     pea    L39
  397.     jsr    _verror
  398.     addq.l    #4,a7
  399. L10
  400.     fmove.s    d4,fp7
  401.     fsub.s    d5,fp7
  402.     ftst.x    fp7
  403.     fbne.w    L11
  404.     pea    L40
  405.     jsr    _verror
  406.     addq.l    #4,a7
  407. L11
  408.     fmove.s    d3,fp7
  409.     fsub.s    d2,fp7
  410.     ftst.x    fp7
  411.     fbne.w    L12
  412.     pea    L41
  413.     jsr    _verror
  414.     addq.l    #4,a7
  415. L12
  416.     pea    -$40(a5)
  417.     jsr    _identmatrix
  418.     addq.l    #4,a7
  419.     fmove.s    d2,fp7
  420.     fmul.d    #$.40000000.00000000,fp7
  421.     fmove.s    d6,fp6
  422.     fsub.s    $8(a5),fp6
  423.     fdiv.x    fp6,fp7
  424.     lea    -$40(a5),a3
  425.     moveq    #0,d7
  426.     fmove.s    fp7,0(a3,d7.l*4)
  427.     fmove.s    d2,fp7
  428.     fmul.d    #$.40000000.00000000,fp7
  429.     fmove.s    d4,fp6
  430.     fsub.s    d5,fp6
  431.     fdiv.x    fp6,fp7
  432.     lea    -$40(a5),a3
  433.     lea    $10(a3),a3
  434.     moveq    #1,d7
  435.     fmove.s    fp7,0(a3,d7.l*4)
  436.     fmove.s    d6,fp7
  437.     fadd.s    $8(a5),fp7
  438.     fmove.s    d6,fp6
  439.     fsub.s    $8(a5),fp6
  440.     fdiv.x    fp6,fp7
  441.     lea    -$40(a5),a3
  442.     lea    $20(a3),a3
  443.     moveq    #0,d7
  444.     fmove.s    fp7,0(a3,d7.l*4)
  445.     fmove.s    d4,fp7
  446.     fadd.s    d5,fp7
  447.     fmove.s    d4,fp6
  448.     fsub.s    d5,fp6
  449.     fdiv.x    fp6,fp7
  450.     lea    -$40(a5),a3
  451.     lea    $20(a3),a3
  452.     moveq    #1,d7
  453.     fmove.s    fp7,0(a3,d7.l*4)
  454.     fmove.s    d3,fp7
  455.     fadd.s    d2,fp7
  456.     fneg.x    fp7
  457.     fmove.s    d3,fp6
  458.     fsub.s    d2,fp6
  459.     fdiv.x    fp6,fp7
  460.     lea    -$40(a5),a3
  461.     lea    $20(a3),a3
  462.     moveq    #2,d7
  463.     fmove.s    fp7,0(a3,d7.l*4)
  464.     lea    -$40(a5),a3
  465.     lea    $20(a3),a3
  466.     moveq    #3,d7
  467.     move.l    #$BF800000,0(a3,d7.l*4)
  468.     fmove.s    d3,fp7
  469.     fmul.d    #$.C0000000.00000000,fp7
  470.     fmove.s    d2,fp6
  471.     fmul.x    fp6,fp7
  472.     fmove.s    d3,fp6
  473.     fsub.s    d2,fp6
  474.     fdiv.x    fp6,fp7
  475.     lea    -$40(a5),a3
  476.     lea    $30(a3),a3
  477.     moveq    #2,d7
  478.     fmove.s    fp7,0(a3,d7.l*4)
  479.     lea    -$40(a5),a3
  480.     lea    $30(a3),a3
  481.     moveq    #3,d7
  482.     clr.l    0(a3,d7.l*4)
  483.     pea    -$40(a5)
  484.     jsr    _loadmatrix
  485.     addq.l    #4,a7
  486.     fmovem.x (a7)+,[LATEST]
  487.     movem.l    (a7)+,#L37
  488.     unlk    a5
  489.     rts
  490.  
  491.     XDEF    _ortho
  492. _ortho
  493. L42    EQU    -$74
  494.     link    a5,#L42+52
  495. L43    EQU    $8FC
  496.     movem.l    #L43,-(a7)
  497.     fmovem.x fp6/fp7,-(a7)
  498.     move.s    $1C(a5),d2
  499.     move.s    $18(a5),d3
  500.     move.s    $14(a5),d4
  501.     move.s    $10(a5),d5
  502.     move.s    $C(a5),d6
  503.     move.l    userbreak_flagpos,a1
  504.     btst    #4,(a1)
  505.     bne    L22
  506.     tst.b    _vdevice
  507.     bne    L13
  508.     pea    L44
  509.     jsr    _verror
  510.     addq.l    #4,a7
  511. L13
  512.     fmove.s    d6,fp7
  513.     fsub.s    $8(a5),fp7
  514.     ftst.x    fp7
  515.     fbne.